package com.example.springbootblog.common.utils;


import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

public class SecurityUtil {
    //    生成密文

    /**
     *
     * @param password 明文
     * 密文 = 加密(盐值 + 明文)
     * @return 盐值 + 密文
     */
    public static String genCiphertext(String password) {
        // 生成盐值
        String salt = UUID.randomUUID().toString().replace("-","");

//        原生密码 = 盐值 + 密文
        String root = salt + password;


        // 生成密文
        String ciphertext = DigestUtils.md5DigestAsHex(root.getBytes(StandardCharsets.UTF_8)).toString();


//        返回盐值+ 密文
        return salt + ciphertext;

    }


    //    校验密文
    public static boolean checkCiphertext(String inputPassword, String sqlCiphertext) {
        // 校验参数
        if (!StringUtils.hasLength(inputPassword) || !StringUtils.hasLength(sqlCiphertext)) {
            return false;
        }

        // 判断 sqlPassword 的合法性
        if (sqlCiphertext.length() != 64) {
            return false;
        }



//        截取出盐值
        String  salt = sqlCiphertext.substring(0,32);

//        输入的根密码 = 盐值 + 密文
        String root = salt + inputPassword;


        // 转化成输入密文
        String inputCiphertext = salt + DigestUtils.md5DigestAsHex(root.getBytes(StandardCharsets.UTF_8)).toString() ;



//        判断密文是否合法
        return inputCiphertext.equals(sqlCiphertext);
    }

}
